import java.util.Scanner;

/**
 * 二货小易有一个W*H的网格盒子，网格的行编号为0~H-1，网格的列编号为0~W-1。
 * 每个格子至多可以放一块蛋糕，任意两块蛋糕的欧几里得距离不能等于2。
 * 对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
 * ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
 * 小易想知道最多可以放多少块蛋糕在网格盒子里。
 *
 * 输入：3 2
 * 输出：4
 *
 * https://www.nowcoder.com/practice/1183548cd48446b38da501e58d5944eb?tpId=122&tqId=33662&ru=/exam/oj
 */

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    /**
     * 我写的
     */
    public static void main1(String[] args) {
        Scanner scan = new Scanner(System.in);

        int row = scan.nextInt();
        int col = scan.nextInt();
        int result = 0;

        int[][] list = new int[row][col];

        for(int i = 0; i < list.length; ++i) {
            for (int j = 0; j < list[i].length; ++j) {
                if (i - 2 >= 0 && list[i - 2][j] == 1)
                    continue;
                if (j - 2 >= 0 && list[i][j - 2] == 1)
                    continue;
                list[i][j] = 1;
                ++result;
            }
        }
        System.out.println(result);
    }

    /**
     * 题解
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int col = in.nextInt();
        int row = in.nextInt();
        int count = 0;
        int[][] array = new int[row][col];

        for(int i = 0;i < row;i++) {
            for(int j = 0;j < col;j++) {
                if(array[i][j] == 0) {
                    count++;
                    if(i+2 < row) {
                        array[i+2][j] = 1;
                    }
                    if(j+2 < col) {
                        array[i][j+2] = 1;
                    }
                }
            }
        }
        System.out.println(count);
    }

}